IPC(InterProcess Communication)프로세스들이 서로 공간을 쉽게 접근할 수 있다면, 프로세스 데이터/코드가 바뀔 수 있기 때문에 허용하지 않는다.
프로세스는 다른 프로세스의 공간을 접근할 수 없다.(기본적으로 방법이 없다)
프로세스간의 커뮤니케이션을 해야할 수 있기 때문에 제공하는 프로세스간의 통신방법
IPC(InterProcess Communication)
프로세스간 통신이 필요한 이유성능을 높이기 위해서 여러 프로세스를 만어서 동시 실행(멀티 코어)
이 때 프로세스간 상태 확인 및 데이터 송수신 필요
참고)
멀티코어 & 멀티프로세서멀티 코어는 다중 실행 장치가 있는 단일 CPU를 말하며, 다중 프로세서는 두 개 이상의 CPU가 있는 시스템을 말한다.
fork() 시스템콜 fork() 함수로 프로세스 자신을 복사해서 새로운 프로세스를 만들 수 있다.
부모 프로세스, 자식 프로세스
CPU안에 코어가 8개 있는 경우와 같이 멀티코어, 각 프로세스를 각 코어에 동시 실행 가능(병렬 처리)
ex) 여러 프로세스 동시 실행하기
1~10000까지 더하기
fork() 함수로 10개 프로세스 만들어서, 각각 1~1000, 1001~2000, … 더하기
각각 더한 값을 모두 합하면, 더 빠르게 동작 가능
단, 이때 각 프로세스가 더한 값을 수집해야 하므로, 프로게스간 통신 필요
ex) 웹 서버
웹 서버는 요청이 오면, HTML 파일을 클라이언트에게 제공하는 프로그램이다.
새로운 요청이 올 때마다, fork() 함수로 새로운 프로세스를 만들고, 각 사용자 요청에 즉시 대응해야 한다.
CPU 병렬 처리가 가능하다면, 더 빠르게 대응가능
단 이 때 각 프로세스 제어 및 상태 정보 교환을 위해 프로세스간 통신 필요
IPC 기법
문서 공유 방법(저장 매체 공유)간단히 다른 프로세스에 전달할 내용을 파일에 쓰고, 다른 프로세스가 해당 파일을 읽으면 된다.
file을 사용하면 실시간으로 직접 원하는 프로세스에 데이터 전달이 어렵다.
해당 프로세스가 파일을 읽어야 하는데 계속 실시간으로 읽고 있을 수 없다.
저장 매체에 데이터를 읽기 위해서 상당히 긴 시간이 걸린다.
실제 프로세스 공간하나의 프로세스는 기본적으로 4Gb이다.(가상메모리)
program text는 kernel 공간 접근할 수 없다.(CPU protection ring)
실제 커널 공간메모리는 물리 메모리에서 서로 공간을 공유하며, 가상 메모리에서 사용자 주소 공간 중
많이 쓰이는 메모리만이 메인 메모리에 저장된다.
프로세스간 사용자 주소 공간은 기술적으로 분리되어 있고 침범 불가능
커널 공간은 공유한다.
자세한 내용은 가상 메모리 참고
다양한 IPC 기법(InterProcess Communication)1. file 사용
2. Message Queue
3. Shared Memory
4. Pipe
5. Signal
6. Semaphore
7. Socket
…
2번부터는 모두 공유하는 커널 공간을 활용하는 방법이다.(커널 공간은 공유되기 때문에)